Today's computer networks typically permit users to remotely access a wide variety of peripheral devices. For instance, network computer users may be permitted access to remote hard disk drives and other storage devices, modem pools and Internet connections, printers, and other peripherals on a network which are not local to the users' computers. By remotely distributing peripherals in this manner, many users may share expensive printers, store data on a common storage device for timed backup, or access the Internet through a common connection. Each access of a remote device by a network user, however, consumes some of a limited amount of network bandwidth. Copying a large file to or from a remote hard disk drive, for example, may utilize a large portion of the network's total bandwidth and cause the network to be slower for other operations. Likewise, printing a large document on a remote printer may also consume an enormous amount of network bandwidth when the document is transmitted from the user, or client, to the computer to which the printer is physically connected, or print server.
One reason remote printing may consume so much network bandwidth is because any font contained in the document to be printed that is not installed on the print server at the time of printing must be downloaded to the print server, i.e., transmitted and installed, before printing can begin. When documents are printed remotely which contain scaleable fonts, such as TrueType or Postscript fonts, there is a large amount of information for each glyph in each font which describes how the glyph's shape is to be formed at various sizes. Accordingly, these fonts can be large and therefore require a significant amount of network bandwidth when transferred. This is especially true with respect to the remote printing of documents containing Far East fonts, such as Chinese, Japanese, or Korean language fonts, which typically have sizes of several megabytes, sometimes up to 30 megabytes, and may contain upward of 40,000 glyphs.
When documents containing Far East fonts are printed remotely, it may take several minutes to download the fonts to the print server. This is because the program responsible for printing the document, or print spooler, cannot begin printing the document until all of the fonts used on the first page (which are not already loaded on the server) are received. This is true even if only one glyph out of the entire font is used in the document. Valuable network bandwidth may therefore be wasted by downloading entire fonts to the print server when only a few glyphs from the font are actually needed to print the document.
There are two known methods of printing to a remote printer which decrease network bandwidth usage and print delays when printing documents containing large fonts such as Far East fonts. However, each of these known methods has drawbacks. The first method involves disabling remote EnhancedMetaFile (EMF) printing. Using EMF printing, the calls made by the printing application are packaged into EMF records and spooled to the remote machine to be processed. EMF printing allows immediate return to the application executing on the print client machine upon issuing the print command, because recording the EMF records on the client machine is a very quick process. The time (and CPU) consuming task of processing EMF records is then executed on the print server, where the records are eventually converted to the raw printer commands and sent to the printer.
When remote EMF printing is disabled, the EMF records are processed into raw printer commands in the client printer driver. Then the raw printer data is spooled to the remote print server and sent to the printer attached to it. Disabling remote EMF printing in this manner ensures that only the raw commands for the glyphs needed in the print job are spooled to the print server, as opposed to having to send the entire font file along with EMF records. However, the benefit of immediate return to the printing application is lost because all of the processing is being executed on the client.
If remote EMF printing is enabled, good performance and immediate return to the application is typical when no Far East fonts are used in the document to be printed. However, performance suffers when an occasional Far East font needs to be printed because the entire Far East font file must be written to the spool file, causing a slow return to the application. Moreover, because spooling of the whole Far East font file requires a significant amount of bandwidth, printing is interrupted while the font file is being spooled. When remote EMF printing is disabled, return to the application is slow because of all the processing on the client, but spooling time is reduced somewhat by sending only necessary raw printer data. The solution described herein addresses both of these shortcomings.
The second method for remote printing involves downloading to the print spooler a subset of an entire font used in the document comprising only those glyphs which are actually used in the document. By downloading only subsetted fonts ("subsetting"), a smaller number of glyphs is downloaded from the print client to the print server, and network bandwidth usage is accordingly reduced. However, in order to determine the complete list of glyphs that are used in the document, the whole document would need to be processed before the fonts used in the document could be subsetted. For a large document, the time needed to perform this operation would be substantial. Therefore, the useful feature called "printing while spooling" (printing one page while the information needed for subsequent pages is being spooled) would be lost. Consequently, the delay prior to printing the first page can be substantial. Moreover, when a large number of glyphs is used in the document and the size of the subsetted font approaches the size of the entire font, this solution still imposes long delays prior to beginning printing while the print server downloads a virtually complete font.
Therefore, there is a need for a method and system for remote printing which (1) reduces network bandwidth usage, (2) preserves fast return to the printing application and reduces print delays, and (3) which permits printing while spooling.